#ifndef CONSTANTS_H_
#define CONSTANTS_H_

#define PI 3.14159265f

// -----------MODEL-------------
#define CRANE_WIDTH				3.0f
#define CRANE_HEIGHT			10.0f

#define TOWER_COLUMN_WIDTH		0.2f
#define TOWER_LATTICE_WIDTH		0.1f
#define TOWER_TOP_HEIGHT		0.2f
#define TOWER_TOP_BORDER		0.4f

#define CABIN_WIDTH				(CRANE_WIDTH + 2.0f)
#define CABIN_HEIGHT			3.0f
#define CABIN_SPEED				1.0f

#define BOOM_LENGTH				9.0f
#define BOOM_COLUMN_SIZE		0.15f
#define BOOM_MAX_ANGLE			70.0f
#define BOOM_SPEED				1.0f

#define CABLE_WIDTH				0.07f
#define CABLE_MIN_HEIGHT		1.0f
#define CABLE_MAX_HEIGHT		7.0f
#define CABLE_SPEED				0.1f
#define HOOK_HEIGHT				0.15f

#define DIRTINESS_SPEED			0.03f


// -----------KEYS-------------
#define KEY_CABIN_ROTATE_RIGTH		'h'
#define KEY_CABIN_ROTATE_LEFT		'y'

#define KEY_BOOM_ROTATE_UP			'u'
#define KEY_BOOM_ROTATE_DOWN		'j'

#define KEY_CABLE_UP				'l'
#define KEY_CABLE_DOWN				'k'

#define KEY_DIRTINESS_INCREASE		'v'
#define KEY_DIRTINESS_REDUCE		'c'


// ------------VIEW-------------
#define AERIAL_INIT_DISTANCE	1.0f
#define AERIAL_SPEED_ROTATION	0.01f
#define AERIAL_SPEED_ZOOM 		0.5f
#define AERIAL_MAX_ZOOM			3.0f
#define AERIAL_MAX_ROTATION_X	360.0f
#define AERIAL_MAX_ROTATION_Y	180.0f
#define AERIAL_X				0.0f
#define AERIAL_Y				7.0f
#define AERIAL_Z				-0.5f

#define DEFAULT_X				0.0f
#define DEFAULT_Y				-7.0f
#define DEFAULT_Z				9.0f
#define DEFAULT_LOOK_AT_X		0.0f  // cabin center X-coordinate
#define DEFAULT_LOOK_AT_Y		2.5f  // cabin center Y-coordinate
#define DEFAULT_LOOK_AT_Z		8.5f  // cabin center Z-coordinate

#define GROUND_INIT_X			0.0f
#define GROUND_INIT_Y			-7.0f
#define GROUND_INIT_Z			2.0f
#define GROUND_SPEED_WALK		0.5f
#define GROUND_SPEED_ROTATION	2.0f
#define GROUND_MAX_ROTATION_X	360.0f
#define GROUND_MAX_ROTATION_Y	90.0f

#endif /* CONSTANTS_H_ */
